package org.japo.java.swing.igu;

import java.awt.Font;
import java.awt.HeadlessException;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import org.japo.java.basics.entities.Nif;
import org.japo.java.swing.listeners.GEA;

public class IGU extends JFrame {
    // Referencias a componentes accedidos
    private JTextField txfDni;
    private JLabel lblLetra;
    
    public IGU() throws HeadlessException {
        iniciarComponentes();
    }

    private void iniciarComponentes() {
        // Panel contenedor
        JPanel pnlPrincipal = new JPanel();
        
        // Fuente
        Font f = new Font("Courier New", Font.BOLD, 40);
        
        // DNI
        txfDni = new JTextField("99999999");
        txfDni.setColumns(8);
        txfDni.setFont(f);
        txfDni.setHorizontalAlignment(JTextField.RIGHT);
        txfDni.addActionListener(new GEA(this));
        pnlPrincipal.add(txfDni);
        
        // Guión
        JLabel lblGuion = new JLabel("-");
        pnlPrincipal.add(lblGuion);
        
        // Letra
        lblLetra = new JLabel("*");
        lblLetra.setFont(f);
        pnlPrincipal.add(lblLetra);
        
        // Ventana principal
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setTitle("NIF");
        setResizable(false);
        setContentPane(pnlPrincipal);
        pack();
        setLocationRelativeTo(this);
    }

    public void procesarNif() {
        try {
            // Obtener DNI del interfaz
            int dni = Integer.parseInt(txfDni.getText());
            
            // Calcular la letra del DNI
            char letra = Nif.calcularLetraNif(dni);
            
            // Poner letra en el interfaz
            lblLetra.setText(letra + "");
        } catch (Exception e) {
            // Marcar la letra como errónea
            lblLetra.setText("*");
        }
    }
}
